package com.foreknow.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * 1.什么是会话
 * 它是指客户端与服务器端之间数据的传输（登录，购物车）。
 * 2.会话管理：管理数据。
 * 常用的会话技术：
 * 1.Cookie 数据会保存在客户端
 * 2.Session 数据会保存在服务器端
 *
 *
 * 什么是Cookie:它是客户端的技术，程序会把每个用户的数据以cookie的形式写给用户各自的浏览器，
 * 当用户使用浏览器再去访问Web服务器的资源的时候，它会有它各自的数据。
 *
 * Cookie类：主要用于存储会话数据。
 * 1.构造Cookie对象
 * 		 Cookie(name,value);
 *  Cookie cookie = new Cookie("key","value");
 * 2.设置Cookie
 * 		setPath(url) 设置Cookie的有效路径
 * 		setMaxAge(int exp)  设置Cookie的有效时间(秒为单位的)例如：一天  24*60*60
 * 		setValue(value)     设置Cookie的值
 * 3.发送cookie到浏览器端保存
 * 		response.addCookie(cookie);
 *
 * 4.服务器端接收cookie
 * 		返回值类型Cookie[]   request.getCookies(cookie);
 *
 *
 * Cookie的原理
 * 1.要在服务器端创建Cookie对象，要把会话的数据存储到会话中
 *
 * 2.服务器会发送Cookie的信息给浏览器，之后会把cookie保存到浏览器端
 *
 * 3.浏览器会在下次访问服务的时候，会携带cookie信息（这些信息会包含在http请求头中）
 *
 * 4.服务器会接收到浏览器携带的cookie信息
 *
 * 后期如果解决客户端与服务器端的多次请求（解决的方案就是用H5中的本地存储）
 *
 * 注意：
 * 1.setPath(uri):设置路径保存在哪里，浏览器在有效的路径下访问服务器的时候会携带cookie信息
 *
 * 2.setMaxaAge(int exp)
 * 1.正数：表示cookie数据保存浏览器的缓存到硬盘中，数值表示要保存的时间
 *
 * 2.负数：表示cookie数据会保存在浏览器的内存中，如果浏览器关闭，cookie就失效了。
 *
 * 3. 0：表示会删除同名的cookie数据
 *
 * cookie的数据类型只能保存非中文字符串类型。可以保存多个cookie,一个浏览器只能保存300个
 * cookie,每个站点最多可以存入20个cookie,每个cookie的大小限制为4KB
 * @author ttc
 *
 */
public class CookieDemo extends HttpServlet {
	/**
	 *
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

//		Cookie cookie = new Cookie("fender","gibson");
//		cookie.setPath("/hello");//如果没有设置有效路径，默认的是Web的项目地址
//		cookie.setMaxAge(1*30*24*60*60);//设置cookie的存活时间为20秒
//		response.addCookie(cookie);
		PrintWriter out = response.getWriter();
		Cookie[] cookies = request.getCookies();
		if(cookies!=null) {
			for(Cookie c:cookies) {
				String name = c.getName();
				String value = c.getValue();
				out.println(name+"----"+value);

			}
		}else {
			System.out.println("否则没有接收到cookie数据......");
		}
	}
//
//	@Override
//	protected void doPost(HttpServletRequest request, HttpServletResponse response)
//			throws ServletException, IOException {
//		doGet(request,response);
//
//	}

}














